<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>弯矩和曲率计算</title>
    <style>
        .box {

        }
    </style>
</head>
<body ms-controller="MomentAndCurvature">
<!--输入-->
<div>
    <input type="text" placeholder="曲率" ms-duplex="c"/>
    <input type="text" placeholder="规定计算次数" ms-duplex="T"/>
    <button ms-click="doIt">确定</button>
</div>

<!--输出-->
<table>
    <thead>
    <tr>
        <td>
            曲率:
        </td>
        <td>
            弯矩:
        </td>
        <td>
            混凝土应变:
        </td>
        <td>
            钢筋应变:
        </td>
    </tr>
    </thead>
    <tbody>
    <tr ms-repeat="res">
        <td>
            {{el.c}}
        </td>
        <td>
            {{el.m}}
        </td>
        <td>
            {{el.ec}}
        </td>
        <td>
            {{el.es}}
        </td>
    </tr>
    </tbody>
</table>
<script src="avalon.js"></script>

<script>
    avalon.ready(function () {
        var vm = avalon.define({
            $id: "MomentAndCurvature",

            //输出结果
            res: [],

//            变量
            c: "",//曲率
            m: "",//弯矩
            ec: "",//混凝土应变
            es: "",//钢筋应变
            T: 300,//规定的计算次数


            doIt: function () {
                for (var i = 0; i < vm.T; i++) {

                    //求各混凝土条带和钢筋的应变


                    var E = 2//hrb335钢筋的弹性模量
                    var es1=0.2 //todo 反向加载的历史的累计骨架应变，暂时设置的值
                    var Eb = E / 6*Math.log(10*es1)/Math.LN10;
                    var a = E / (E - Eb)
                    var yi//任意一条带的高度中心距截面中性轴（z-z）的距离

                    var ec//混凝土应变缓存量
                    var es//钢筋应变缓存量
                    //求得每个条带的应变，放到条带数组中
                    var strips=[]//条带
                    for(var n=1;n<101;n++){
                        yi=252.5-5*n//通过当前是第几根条带计算这根条带的yi
                        ec=vm.c*yi//通过yi计算这根条带混凝土的应变
                        es=ec//todo 初略计算钢筋的应变
                        //计算钢筋的应变

                        strips.push({
                            ec:ec,//混凝土应变
                            es:es,//钢筋应变
                            yi:yi
                        })
                    }


                    //按混凝土和钢筋的应力-应变关系求与应变相对应的应力值
                    var s//应力,
                    var e1=0.001//卸载时的应变
                    var s1=0.002//卸载时的应力
                    for(var j=0;j<strips.length;j++){
                        //混凝土的应力
                        ec=strips[j].ec
//                        e1= todo 计算e1
                        //s1= todo 计算s1
                        strips[j].sc=(ec-0.2*e1)*s1/(1.8*e1-ec)
                        //钢筋的应力
                        es=strips[j].es
                        strips[j].ss=(es*a*es1-Math.pow(a, 2)*Eb)/(E-Eb)
                    }
                    /*计算N*/
                    var Nc//每一条带上混凝土的作用力
                    var Ns//每一条带上钢筋的作用力
                    var ss//应力缓存
                    var N=0//全部的作用力
                    var NYi=0//

                    var NcAll=0
                    var NsAll=0
                    for(var k=0;k<strips.length;k++){
                        //混凝土的作用力
                        strips[k].Nc=1250*strips[k].sc
                        strips[k].NcYi=strips[k].Nc*strips[k].yi

                        //钢筋的作用力
                        strips[k].Ns=5000*strips[k].ss
                        strips[k].NsYi=strips[k].Ns*strips[k].yi

                        //累加
                        N=N+strips[k].Nc+strips[k].Ns
                        NYi=NYi+strips[k].NcYi+strips[k].NsYi

                    }


                    /*是否满足平衡条件*/
                    var balance=true//todo 假定满足平衡条件
                    if(balance){
                        var M=NYi
                        vm.res.push({
                            c: vm.c,//曲率
                            m: M,//弯矩
                            ec: "",//混凝土应变
                            es: "",//钢筋应变
                        })
                    }

                    vm.c++

                }
            }

        })
        avalon.scan()
        return MomentAndCurvature = vm
    })
</script>
</body>
</html>